//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Luces.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)
Luces::Luces(Lampara* lampara){
        encendidaAmbiente=false;
        encendidaRemota=false;
        encendidaLampara=false;

        //luz de ambiente
        PosicionLuzAmbiente[0]=30.0; PosicionLuzAmbiente[1]=30.0;
        PosicionLuzAmbiente[2]=30.0; PosicionLuzAmbiente[3]=1.0;
        glLightfv(GL_LIGHT0, GL_POSITION, PosicionLuzAmbiente);

        GLfloat a[]={0.8,0.8,0.8,1.0};
        glLightModelfv(GL_LIGHT_MODEL_AMBIENT,a);

        //luz remota
        PosicionLuzRemota[0]=40.0; PosicionLuzRemota[1]=-40.0;
        PosicionLuzRemota[2]=0.0; PosicionLuzRemota[3]=0.0;

        glLightfv(GL_LIGHT1, GL_POSITION, PosicionLuzRemota);
        GLfloat a2[]={0.2,0.2,0.2,1.0};
        glLightModelfv(GL_LIGHT_MODEL_AMBIENT,a2);

        GLfloat LuzDifusa2[]={1.0,1.0,1.0,1.0};
        glLightfv(GL_LIGHT1,GL_DIFFUSE,LuzDifusa2);
        GLfloat LuzAmbiente2[]={0.3,0.3,0.3,1.0};
        glLightfv(GL_LIGHT1,GL_AMBIENT,LuzAmbiente2);
        /*
        PosicionLuzLampara[0]=30.0; PosicionLuzLampara[1]=50.0;
        PosicionLuzLampara[2]=30.0; PosicionLuzLampara[3]=1.0;

        GLfloat LuzDifusa[]={1.0,1.0,1.0,1.0};
        glLightfv(GL_LIGHT2,GL_DIFFUSE,LuzDifusa);
        GLfloat LuzAmbiente[]={0.3,0.3,0.3,1.0};
        glLightfv(GL_LIGHT2,GL_AMBIENT,LuzAmbiente);
        glLightfv(GL_LIGHT2, GL_POSITION, PosicionLuzLampara);

        GLfloat direccion[]={0,-1,0};
        glLightfv(GL_LIGHT2,GL_SPOT_DIRECTION,direccion);
        glLightf(GL_LIGHT2,GL_SPOT_CUTOFF,15);
        glLightf(GL_LIGHT2,GL_SPOT_EXPONENT,4);
          */
        pintarLuces();

}

void Luces::cambiaEstadoAmbiente(){
        encendidaAmbiente=!encendidaAmbiente;
        pintarLuces();
}

void Luces::cambiaEstadoRemota(){
        encendidaRemota=!encendidaRemota;
        pintarLuces();
}

void Luces::cambiaEstadoLampara(){
        encendidaLampara=!encendidaLampara;
        pintarLuces();
}

void Luces::pintarLuces(){
        if (encendidaAmbiente) glEnable(GL_LIGHT0);
        else glDisable(GL_LIGHT0);

        if (encendidaRemota) glEnable(GL_LIGHT1);
        else glDisable(GL_LIGHT1);
                 /*
        if (encendidaLampara){
         glEnable(GL_LIGHT2);
         GLfloat LuzDifusa[]={1.0,1.0,1.0,1.0};
        glLightfv(GL_LIGHT2,GL_DIFFUSE,LuzDifusa);
        GLfloat LuzAmbiente[]={0.3,0.3,0.3,1.0};
        glLightfv(GL_LIGHT2,GL_AMBIENT,LuzAmbiente);
        glLightfv(GL_LIGHT2, GL_POSITION, PosicionLuzLampara);

        GLfloat direccion[]={0,-1,0};
        glLightfv(GL_LIGHT2,GL_SPOT_DIRECTION,direccion);
        glLightf(GL_LIGHT2,GL_SPOT_CUTOFF,15);
        glLightf(GL_LIGHT2,GL_SPOT_EXPONENT,4);
}
        else glDisable(GL_LIGHT2);*/
                  
}
